import java.io.File;
import java.util.Scanner;

/**
 * 扫描指定目录，并找到名称中包含指定字符的所有普通文件（不包含目录），并且后续询问用户是否要删除该文件
 * 主要使用 递归思想, 遍历目录 (n叉树)
 * 如果是文件就继续递归,否则就判断是否满足删除条件,如果满足就询问用户是否删除
 */

public class Demo1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入指定的目录: ");
        // 获取路径
        String str = scanner.next();
        // 生成 File 对象实例
        File filePath = new File(str);
        // 检测是否是目录
        if(!filePath.isDirectory()) {
            // 当前不是目录,无需进行后续操作
            System.out.println("传入的地址不是目录: ");
            return;
        }
        // 获取需要删除的字符
        System.out.println("请输入需要删除的指定字符: ");
        String word = scanner.next();
        checkPath(filePath,word);// 这里去遍历我们的目录
    }

    private static void checkPath(File filePath, String word) {
        File[] root = filePath.listFiles();// 获取当前的目录
        for(File f: root) {
            System.out.println("当前正在检查: " + f.getAbsolutePath());// 打印日志
            if(!f.isAbsolute()) {
                return ;
            }
            if (f.isFile()) {
                // 不是目录,我们就去检查是否需要删除
                checkWord(f,word);
            }else {
                // 是目录,我们就需要继续递归
                checkPath(f,word);
            }
        }
    }

    private static void checkWord(File filePath, String word) {
        String path = filePath.getAbsolutePath();
        if(path.contains(word)) {
            // 满足条件 询问用户是否删除
            Scanner scanner = new Scanner(System.in);
            System.out.println("当前文件是: " + path + " 请问是否需要删除 删除请输入(Y/n)");
            String str = scanner.next();
            if (str.contains("Y") || str.contains("y")) {
                System.out.println("删除成功!");
                filePath.delete();
            }else {
                // 用户输入 n 或者其他字符就无需处理
                System.out.println("取消删除!");

            }
        }
    }
}
